﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Data.Dao.Linq;
using System.Data.SqlClient;
using Crosland.Automotriz.Logic.ControlExeption;
namespace Crosland.Automotriz.Logic.Linq
{
    public class clsTh_Procesoabc_CabLogic
    {

        clsTh_Procesoabc_CabDAO clsTh_procesoAbcCabDao = new clsTh_Procesoabc_CabDAO();

        public IEnumerable<Object> listar_th_procesoabc_cab()
        {
            try
            {

                if (clsTh_procesoAbcCabDao.listar_th_procesoabc_cab() == null) {

                    throw new DataException("No hay datos en la tabla LOG INVENTARIO ABC CAB");                
                }
                 return clsTh_procesoAbcCabDao.listar_th_procesoabc_cab();
            }
            catch (Exception e)
            {
                
                throw new RunException("ERROR CON LA TABLA LOG INVENTARIO ABC CAB ",e);

            }         

        }

        public IEnumerable<Object> listar_th_procesoabc_cab_detalle(int idCab)
        {
            try
            {  if (clsTh_procesoAbcCabDao.listar_th_procesoabc_cab_detalle(idCab).Count() == 0)
                {
                    throw new DataException("No hay datos en la lista LOG INVENTARIO ABC RANGO ");
                }
                return clsTh_procesoAbcCabDao.listar_th_procesoabc_cab_detalle(idCab);
            }
            catch (Exception e)
            {
                throw new RunException("Error al listar la tabla LOG INVENTARIO ABC RANGO ",e);
            }
        }

        public bool procesar_ABC(int ID_ORG_VTA, string PERI_VENTA_INI, string PERI_VENTA_FIN, string VI_ABC_DESDE_HASTA_VEN, string VI_ABC_DESDE_HASTA_CAN, string COD_USUARIO, int ANIO, int MES, int MESES_N, int MESES_O)
        {

          try
            {

             return clsTh_procesoAbcCabDao.procesar_ABC(ID_ORG_VTA, PERI_VENTA_INI, PERI_VENTA_FIN, VI_ABC_DESDE_HASTA_VEN, VI_ABC_DESDE_HASTA_CAN, COD_USUARIO, ANIO, MES, MESES_N, MESES_O);
           }
            catch (SqlException sqlEx) {

                throw new RunException("ERROR EN EL PROCEDIMIENTO USP_PROCESAR_ABC", sqlEx);           
            }
            catch (Exception ex)
            {
               throw new RunException("ERROR EN LA APLICACION POR FAVOR CONSULTE: " , ex);                
            }       

        }




        public bool update_tipo_Abc(int nro_proceso) {

            return clsTh_procesoAbcCabDao.update_tipo_Abc(nro_proceso);
        
        }


        public bool deleteTh_proceso_abc_cab(int nro_proceso) {

            return clsTh_procesoAbcCabDao.deleteTh_proceso_abc_cab(nro_proceso);
        }




        public int UltimoAnio_th_procesarAbc_cab() {

            return clsTh_procesoAbcCabDao.UltimoAnio_th_procesarAbc_cab();
        
        }

        public int UltimoMes_th_procesarAbc_cab(int anio)
        {

            return clsTh_procesoAbcCabDao.UltimoMes_th_procesarAbc_cab(anio);

        }
        public int? ValidaProcesoxmes(int anio, int mes) {
            try
            {
                return clsTh_procesoAbcCabDao.ValidaProcesoxmes(anio, mes);
            }
            catch (Exception e)
            {
                
                throw new RunException("Error en la aplicación al validar el proceso ABC por mes ",e);
            }
            
        }

      public List<Globales.ListaProcesoABCEtiqueta> lista_etiquetas(){
            return clsTh_procesoAbcCabDao.lista_etiquetas();
        
        }


    }
}
